package BusinessCase;


import Helpers.HelloWorld_hLocal;
import Helpers.ListaDatos_hLocal;
import entity.Boletin;
import entity.Dato;
import entity.Empresa;
import entity.Inddeuda;
import entity.Trm;
import entity.Usuario;
import entity.Video;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

/**
 *
 * @author Carito
 */
@Stateless
@Path("/datos")
public class ListaDatos {
    
    @EJB   private ListaDatos_hLocal helper;
    private static final DateFormat ISO_BASIC = new SimpleDateFormat("ddMMyyyy");
    
    @GET
    @Path("listar")
    @Produces(MediaType.TEXT_XML)
    public List<Dato> Listar (@QueryParam("empresa") String idEmpresa ,
                              @QueryParam("usuario") String idUsuario  ,
                              @QueryParam("filtro") String filtro) 
    {
      return  helper.Listar(idEmpresa, idUsuario, filtro);
    }
    
    @GET
    @Path("trm")
    @Produces(MediaType.APPLICATION_XML)
    public Trm DatoTRM (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoTRM(idDato);
    }
    
    @GET
    @Path("deuda")
    @Produces(MediaType.APPLICATION_XML)
    public Inddeuda DatoDeuda (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoDeuda(idDato);
    }
    
    @GET
    @Path("video")
    @Produces(MediaType.APPLICATION_XML)
    public Video DatoVideo (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoVideo(idDato);
    }
    
    @GET
    @Path("boletin")
    @Produces(MediaType.APPLICATION_XML)
    public Boletin DatoBoletin(@QueryParam("dato")String  idDato)
    {
      return  helper.DatoBoletin(idDato);
    }
    
    //REturn String
      
    @GET
    @Path("listars")
    @Produces(MediaType.TEXT_PLAIN)
    public String Listars (@QueryParam("empresa") String idEmpresa ,
                              @QueryParam("usuario") String idUsuario  ,
                              @QueryParam("filtro") String filtro) 
    {
      return  helper.Listars(idEmpresa,idUsuario, filtro);
    }
    
    @GET
    @Path("trms")
    @Produces(MediaType.TEXT_PLAIN)
    public String DatoTRMS (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoTRMS(idDato);
    }
    
    @GET
    @Path("RangoTrm")
    @Produces(MediaType.TEXT_PLAIN)
    public String RangoTrm (@QueryParam("inicial") String  fechaInicial,
                @QueryParam("final") String fechaFinal)
    {
        Date dtFechaInicial = new Date();
        Date dtFechaFinal = new Date();
        try {
            if (fechaInicial != null) {
                dtFechaInicial = ISO_BASIC.parse(fechaInicial);
            }
            
        } catch (ParseException ex) {
            Logger.getLogger(ListaDatos.class.getName()).log(Level.SEVERE, null, ex);
            throw new WebApplicationException(
                    Response
                        .status(Status.BAD_REQUEST)
                        .entity(String.format("Couln't parse date: {0} ({1})", fechaInicial, ex.getMessage()))
                        .build()
                    );
        }

        try {
            if (fechaFinal != null) {
                dtFechaFinal = ISO_BASIC.parse(fechaFinal);
            }
        } catch (ParseException ex) {
            Logger.getLogger(ListaDatos.class.getName()).log(Level.SEVERE, null, ex);
            throw new WebApplicationException(
                    Response
                        .status(Status.BAD_REQUEST)
                        .entity(String.format("Couln't parse date: {0} ({1})", fechaFinal, ex.getMessage()))
                        .build()
                    );
        }        
        
      return  helper.RangoTRMS(dtFechaInicial, dtFechaFinal);
    }    
    
    @GET
    @Path("deudas")
    @Produces(MediaType.TEXT_PLAIN)
    public String DatoDeudas (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoDeudas(idDato);
    }
    
    @GET
    @Path("videos")
    @Produces(MediaType.TEXT_PLAIN)
    public String DatoVideos (@QueryParam("dato")String  idDato)
    {
      return  helper.DatoVideos(idDato);
    }
    
    @GET
    @Path("boletins")
    @Produces(MediaType.TEXT_PLAIN)
    public String DatoBoletins(@QueryParam("dato")String  idDato)
    {
      return  helper.DatoBoletins(idDato);
    }    
 
}
